/*
    题目描述：https://leetcode.cn/problems/valid-parentheses/
    给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
    有效字符串需满足：
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
*/

function isValid(s) {
    let n = s.length;
    
    if (n % 2 === 1) return false;

    let m = new Map([
        [')', '('],
        [']', '['], 
        ['}', '{'],
    ]);

    let stack = [];

    for (let item of s) {
        if (m.has(item)) {
            if (stack[stack.length - 1] !== m.get(item)) return false;
            else stack.pop();
        } else {
            stack.push(item);
        };
    };

    return !stack.length;
};

// test 
const s1 = '[]{}()';
const s2 = '[(}]';
console.log(isValid(s1));  // true
console.log(isValid(s2)); // false